// 中文注释：主应用组件，集成路由
import React, { useEffect } from 'react';
import { useTranslation } from 'react-i18next'
import i18n from './i18n/i18n';
import { frontendVersionManager } from './utils/version-manager'
import './style/fonts.css';
import '@fortawesome/fontawesome-free/css/all.min.css';
import './utils/memoryLeakFixer';
import { preloadLoginImages } from './utils/imagePreloader';
import { useMessage } from './components/messageApi';
import { setMessageApiRef, handleNetworkError, NetworkErrorType } from './utils/networkErrorHandler';

function App() {
  const { t } = useTranslation();
  const messageApi = useMessage();

  // 在应用启动时为版本管理器设置翻译函数并初始化网络错误处理
  useEffect(() => {
    // 确保i18n已初始化
    if (i18n.isInitialized) {
      // 为版本管理器设置翻译函数
      frontendVersionManager.setTranslationFunction(t);
    } else {
      // 如果i18n尚未初始化，监听初始化完成事件
      const handleInitialized = () => {
        frontendVersionManager.setTranslationFunction(t);
        i18n.off('initialized', handleInitialized);
      };
      i18n.on('initialized', handleInitialized);
    }

    // 设置全局消息API引用，用于网络错误处理
    setMessageApiRef(messageApi);

    // 内存泄漏修复
    const cleanupMemoryLeaks = () => {
      // 执行清理
    };

    // 预加载重要图片
    preloadLoginImages();

    // 组件卸载时执行清理
    return () => {
      cleanupMemoryLeaks();
    };
  }, [t, messageApi]);

  // 判断是否为开发环境
  const isDevelopment = import.meta.env.DEV || import.meta.env.MODE === 'development';

  return (
    <>
      {/* Google登录token检测放在路由组件中处理，而不是App组件 */}
      <div id="app-container">
        {/* 子路由在routes/index.tsx中定义 */}
      </div>
    </>
  )
}

export default App;
